(module ordered-table mzscheme

  (require "../private/require.ss")
  (require-contracts)

  (require ;;"../private/contracts.ss"
           "../private/binding.ss"
           "table-interface.ss"
           "table-from-set.ss"
           "../set/ordered-set.ss")

  (provide/contract
   [ordered-table% (implementation?/c table<%>)]
   [make-ordered-table
    (([compare comparison/c]
      [keys (listof any/c)]
      [values (listof any/c)])
     . ->r . table/c)])

  (define ordered-table% table-from-set%)

  (define (make-ordered-table compare keys values)
    (make-table-from-set
     (make-ordered-set (binding-lift compare)
                       (map make-binding keys values))))

  )